package com.pe.pgn.clubpgn.service.impl;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.pe.pgn.clubpgn.dao.TarjetaEmpresaDao;
import com.pe.pgn.clubpgn.domain.ClpbTarjetaEmpresa;
import com.pe.pgn.clubpgn.domain.beans.BNTarjetaEmpresa;
import com.pe.pgn.clubpgn.service.TarjetaEmpresaService;

@Service("tarjetaEmpresaService")
public class TarjetaEmpresaServiceImpl extends GenericManagerImpl<ClpbTarjetaEmpresa, Long> 
		implements TarjetaEmpresaService{

	@Autowired
	private TarjetaEmpresaDao tarjetaEmpresaDao;

	public List<ClpbTarjetaEmpresa> obtenerTarjetasEmpresa() {
		return tarjetaEmpresaDao.obtenerTarjetasEmpresa();
	}

	public List<BNTarjetaEmpresa> buscarTarjetasEmpresas(
			BNTarjetaEmpresa tarjetaEmpresa, boolean esInicial) {
		
		return tarjetaEmpresaDao.buscarTarjetasEmpresas(tarjetaEmpresa, esInicial);
	}	
	
	public BNTarjetaEmpresa obtenerMaximoCodigoTarjetaEmpresa() {
		
		BigDecimal maximoCodigo = tarjetaEmpresaDao.obtenerMaximoCodigoTarjetaEmpresa();
		maximoCodigo = maximoCodigo.add(BigDecimal.ONE);
 
		BNTarjetaEmpresa tarjetaEmpresa = new BNTarjetaEmpresa();
		tarjetaEmpresa.setNumeroInicio(maximoCodigo);
		return tarjetaEmpresa;
	}

	public boolean existeRango(BNTarjetaEmpresa tarjetaEmpresa) {
		
		return tarjetaEmpresaDao.existeRango(tarjetaEmpresa);
	}

	public void guardarGrupoTarjetasEmpresas(BNTarjetaEmpresa tarjetaEmpresa) {
		
		tarjetaEmpresaDao.guardarGrupoTarjetasEmpresas(tarjetaEmpresa);
	}

	public ClpbTarjetaEmpresa obtenerTarjetaEmpresa(Long id) {
		
		return tarjetaEmpresaDao.obtenerTarjetaEmpresa(id);
	}

	public Map<String, Object> obtenerDatosClientePorFlota(Long coFlotaVehiculo) {
		
		return tarjetaEmpresaDao.obtenerDatosClientePorFlota(coFlotaVehiculo);
	}

	public void actualizarTarjetaEmpresa(ClpbTarjetaEmpresa tarjetaEmpresa) {
		tarjetaEmpresaDao.actualizarTarjetaEmpresa(tarjetaEmpresa);
	}

	public Long obtenerId(String coCodigoTarjetaEmpresa) {
		return tarjetaEmpresaDao.obtenetId(coCodigoTarjetaEmpresa);
	}

	public int esTarjetaValida(String coCodigoTarjetaEmpresa,
			Long coFlotaVehiculo) {
		return tarjetaEmpresaDao.esTarjetaValida(coCodigoTarjetaEmpresa, coFlotaVehiculo);
	}

	public Map<String, Object> obtenerMapValidacionTarjeta(String cadenaTarjetas) {
		return tarjetaEmpresaDao.obtenerMapValidacionTarjeta(cadenaTarjetas);
	}
}
